package com.xbongbong.pro.statistic.enums;

import com.xbongbong.i18n.util.I18nMessageUtil;
import lombok.Getter;

/**
 * 统计穿透，参数key枚举
 * @author zcp
 * @version v1.0
 * @date 2019/4/18 22:18
 * @since v1.0
 */
@Getter
public enum ThroughParamEnum {
    /**
     * 组织架构类型：1员工，2部门
     */
    COMPANY_STRUCT_TYPE("companyStructType", "enum.throughParam.memo.company_struct_type"),
    /**
     * 穿透时的员工id
     */
    CHECKED_USER_ID("checkedUserId", "enum.throughParam.memo.checked_user_id"),
    /**
     * 穿透时的部门id
     */
    CHECKED_DEP_ID("checkedDepId", "enum.throughParam.memo.checked_dep_id"),
    /**
     * 穿透时的员工id数组
     */
    CHECKED_USER_ID_IN("checkedUserIdIn", "enum.throughParam.memo.checked_user_id_in"),
    /**
     * 穿透时的部门id数组
     */
    CHECKED_DEP_ID_IN("checkedDepIdIn", "enum.throughParam.memo.checked_dep_id_in"),
    /**
     * 多选的总数组（多选时的入参字段，部门、用户最初都统一存在这个数组里）
     */
    CHECKED_ID("checkedId", "enum.throughParam.memo.checked_id"),
    /**
     * 销售阶段id、工单模版id、产品id、合同模版id、客户模版id等、分类id
     */
    REF_ID("refId", "enum.throughParam.memo.ref_id"),
    /**
     * 二层筛选id，可以配合refId。比如阶段筛选formId + stageProcessId
     */
    ARG_TWO_ID("argTwoId", "二层筛选id"),
    /**
     * 字符串数组筛选，可以配合refId。比如阶段筛选formId + 多个code（阶段code集合）
     */
    ARG_STR_IN("argStrIn", "字符串数组筛选"),
    /**
     * 省份筛选，当全国筛选时，值为@see MapConstant内存放
     */
    PROVINCE("province", "enum.throughParam.memo.province"),
    /**
     * 穿透时的时间筛选类型
     * 如果穿透的切分的，则为置为相应小维度type，如：筛选了全年（timeType=5），切分成12个月，穿透某个月，则timeType=3
     */
    TIME_TYPE("timeType", "enum.throughParam.memo.time_type"),
    /**
     * 穿透开始时间戳
     */
    START_TIME("startTime", "enum.throughParam.memo.start_time"),
    /**
     * 穿透结束时间戳
     */
    END_TIME("endTime", "enum.throughParam.memo.end_time"),
    /**
     * 数据字典code
     */
    DICTIONARY_CODE("dictionaryCode", "enum.throughParam.memo.dictionary_code"),
    /**
     * 是否是完成率pk，系统指标当为完成情况pk时，要过滤考核产品
     */
    PERFORMANCE_PK("performancePk", "enum.throughParam.memo.performance_pk"),
    /**
     * 穿透系统指标类型（后期自定义指标穿透不需要该值）
     */
    SYSTEM_CODE("systemCode", "enum.throughParam.memo.system_code"),
    /**
     * 图表id，后期自定义指标穿透可能需要该值，那时该值置为图表id即可（系统指标不需该值）
     */
    id("id", "enum.throughParam.memo.id"),
    /**
     * 所属分类id（一般为二级分类id）
     */
    CATEGORY_ID("categoryId", "enum.throughParam.memo.category_id"),
    /**
     * 穿透来源页：工作报告详情穿透需要此参数
     */
    SOURCE_PAGE("sourcePage", ""),
    /**
     * 图表类型
     */
    STATISTICS_TYPE("statisticsType", ""),
    ;


    /**
     * 穿透key值
     */
    private final String key;

    /**
     * 枚举信息
     */
    private final String memo;


    /**
     * 构造一个<code>ThroughParamEnum</code>枚举对象
     *
     * @param key  枚举key
     * @param memo  枚举备注
     */
    ThroughParamEnum(String key, String memo) {
        this.key = key;
        this.memo = memo;
    }

    public String getMemo() {
        return I18nMessageUtil.getMessage(memo);
    }
}
